#include<stdio.h>
#include<sys/types.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<signal.h>
#include<fcntl.h>
#include<sys/wait.h>
int main(int argc,char*argv[])
{
//		char *my_argv[32];
		pid_t id;
//		int status=0;
//		char my_buf[32];
//		memset(my_buf,0,32);
	while(1)
	{
		printf("[wpbfcr@localhost my-shell$] ");
		fflush(stdout);
		char *my_argv[32];
		char my_buf[1024];
		memset(my_buf,'\0',sizeof(my_buf));
	//	fgets(my_buf,31,stdin);
		ssize_t size =read(0,my_buf,sizeof(my_buf)-1);
		if(my_buf[0]=='\n')
		{
			continue;
		}
		if(my_buf[strlen(my_buf)-1]=='\n')
		{
			my_buf[strlen(my_buf)-1]=='\0';
		}
	int i=0;
	int j=0;
	int cur=0;
	int len=strlen(my_buf)-1;
	while(cur<=len)
	{
		cur++;
		if(my_buf[cur]==' ')
	{	
	if(j==0)
	{
		my_buf[cur]='\0';
		my_argv[i++]=my_buf;
		j+=cur;
	}
	else
	{
			my_buf[cur]='\0';
			my_argv[i++]=&my_buf[++j];
			j+=cur;
		}
	}
    }
//	if(i==0&&j==0&&my_buf[0]!='\0')
//	{
//		my_argv[i++]=my_buf;
//	}
	my_argv[i]='\0';
//	printf("%s,%s",my_argv[0],my_argv[1]);
//	fflush(stdout);
//	int q=0;
//	while(argv[q]!=NULL)
//	{
//		printf("%s\n",argv[q++]);
//	}
//	int k=0;
//	while(k<=i)
//	{
//	printf("%s",argv[0]);
//	}
	//	printf("%s,%s\n",my_argv[0],my_argv[1]);
  id =vfork();
  if(id<0)
  {
	perror("vfork");
  }
	 else if(id==0)
  {
////	sleep(1);
//	printf("%s",argv[0]);
	//	printf("%s,%s\n",my_argv[0],my_argv[1]);
	execvp(my_argv[0],my_argv);
	perror("vfork");
	exit(1);
  }
  else
  {
	 pid_t _wait= waitpid(id,NULL,0);
	 if(_wait==id)
	 {
			 ;
	 }
  }
}
//	pid_t id=fork();
//	if(id<0)
//	{
//
//		perror("fork");
//	}
//	else if(id==0)
//	{
//		sleep(1);
//		execl("./shell-test","shell-test",NULL);
//		exit(1);
//	}
//	else{
//		int status=0;
//		pid_t ret=waitpid(-1,&status,0);
//		if(ret==id)
//		{	
//			printf("wait child success\n");
//		}
//	}
	return 0;

}
